package com.fantsey.test.juejin;

/**
 *
 * 小M在工作时遇到了一个问题，他需要将用户输入的不带千分位逗号的数字字符串转换为带千分位逗号的格式，
 * 并且保留小数部分。小M还发现，有时候输入的数字字符串前面会有无用的 0，
 * 这些也需要精简掉。请你帮助小M编写程序，完成这个任务。
 *
 * 输入：s = "1294512.12412"
 * 输出：'1,294,512.12412'
 *
 * 输入：s = "0000123456789.99"
 * 输出：'123,456,789.99'
 *
 * @author fx
 * @date 2024/12/25
 * @since 1.0
 */
public class Question3 {
    /**
     * 思路： 根据长度取模3，来判断第一个千分位的位置，剩下的每隔3个数字，增加一个千分位
     *
     * @param s:
     * @return java.lang.String
     * @author fx
     * @date 2024/12/26
     */

    public static String solution(String s) {
        // writ
        String result = null;
        String decimalPointRegex = "\\.";
        String thousandsSeparator = ",";
        String[] split = s.split(decimalPointRegex);
        String integer = split[0];
        String decimal = null;
        if (split.length > 1) {
            decimal = split[1];
        }
        // 排除前面的0
        Long longValue = Long.valueOf(integer);
        String integerStr = String.valueOf(longValue);
        int group = integerStr.length() / 3;
        int remainder = integerStr.length() % 3;
        StringBuilder stringBuilder = new StringBuilder();
        int lastGroupIndex = 0;
        if (remainder != 0) {
            String thisString = integerStr.substring(0, remainder);
            stringBuilder.append(thisString).append(thousandsSeparator);
            lastGroupIndex = remainder;
        }
        for (int i=0; i<group; i++) {
            String thisString = integerStr.substring(lastGroupIndex, lastGroupIndex+3);
            stringBuilder.append(thisString).append(thousandsSeparator);
            lastGroupIndex += 3;
        }

        if (stringBuilder.length() > 0) {
            result =  stringBuilder.substring(0, stringBuilder.length()-1);
        }
        if (decimal != null) {
            result = result + "." +decimal;
        }
        return result;
    }


    public static void main(String[] args) {
        System.out.println(solution("1294512.12412").equals("1,294,512.12412"));
        System.out.println(solution("0000123456789.99").equals("123,456,789.99"));
        System.out.println(solution("987654321").equals("987,654,321"));
        System.out.println(solution("27337933").equals("27,337,933"));


    }
}
